package beautiful.butterfly.distributed_task_processing_engine.api;

import beautiful.butterfly.distributed_task_processing_engine.task_manage.task_data_items_processor.task_data_item_data_manager.TaskItemStringAndParameterString;

import java.util.Comparator;
import java.util.List;

/**
 * @param <TaskDataItem> 如果是基于mod进行任务取数,mod={0->all-1} ,all=max_mod_value+1(from 0)
 */
public interface TaskDataItemCollectorAndExecuter<TaskDataItem>
{
    /**
     * 一个处理器可以操作一个被定义的任务数据项
     *
     * @param taskParameter                        [任务定义中的]参数
     * @param fetchTaskDataItemNum                 [任务定义中的]每次获取数据的个数
     * @param taskItemNum                          [当前taskProcessor]获取的任务项的个数
     * @param taskItemStringAndParameterStringList [当前taskProcessor]获取的被用来进行处理的任务项列表  总数和taskItemNum一致
     */

    public List<TaskDataItem> getTaskDataItemList(//
                                                  String taskParameter,//
                                                  int fetchTaskDataItemNum,//
                                                  int taskItemNum,//
                                                  List<TaskItemStringAndParameterString> taskItemStringAndParameterStringList //
                                                  //

    ) throws Exception;//

    public Comparator<TaskDataItem> getComparator();

}
